package com.zw.mes.module.verify.controller;

import com.zw.mes.base.BaseController;
import com.zw.mes.common.JsonResult;
import com.zw.mes.common.ValidResult;
import com.zw.mes.module.prodtaskmanager.entity.BaseData;
import com.zw.mes.module.verify.model.OrgModel;
import com.zw.mes.module.verify.model.VerifyInfoModel;
import com.zw.mes.module.verify.service.VerifyService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @className: verifyController
 * @description: 自定义审核架构控制层
 * @author： 徐一贺 18341916590
 * @date： 2021/4/10 15:33
 * @office: 智能控制设计科
 * @research institute： 智能控制设计所
 * @department： 机械设计院
 * @company: 辽宁忠旺机械设备制造有限公司
 * @group： 忠旺集团
 * @version: 1.0
 */
@Controller
@RequestMapping("/verify")
public class VerifyController extends BaseController {
    @Autowired
    private VerifyService service;

    /**
     * @methodName: gotoOrgConfigPage
     * @description: 跳转到审核组织架构配置页
     * @param:
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/10 16:14
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/orgConfig")
    @RequiresPermissions("basic:orgConfig:view")
    public String gotoOrgConfigPage(Model model){
        model.addAttribute("posts", service.findBaseDataByBadaTyp("审核级别"));
        return "/baseManager/verify/orgConfig/page";
    }
    /**
     * @methodName: gotoOrgProcessConfig
     * @description: 跳转到审核流程配置页
     * @param:
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 9:31
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping("/verifyConfig")
    @RequiresPermissions("basic:verifyConfig:view")
    public String gotoOrgVerifyConfig(Model model){
        List<BaseData> levels = service.selectLevel();
        model.addAttribute("levels", levels);
        return "/baseManager/verify/verifyConfig/page";
    }

    /**
     * @methodName: orgList
     * @description: 获取权限架构表
     * @param: name
     * @return： com.zw.mes.common.JsonResult
     * @exception： 
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/10 16:58
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/orgList")
    @RequiresPermissions("basic:orgConfig:view")
    public List<OrgModel> orgList(String name){
        return service.selectOrgList(name);
    }

    /**
     * @methodName: checkUnique
     * @description: 部门名称唯一验证
     * @param: org
     * @return： com.zw.mes.common.ValidResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 8:46
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/orgCheckUnique")
    @RequiresPermissions("basic:orgConfig:view")
    public ValidResult checkUnique(OrgModel org) {
        OrgModel m = service.findOrgByName(org.getName());
        if (org.getId() == null) {
            return ValidResult.result(m);
        }
        if (m == null || org.getId().equals(m.getId())) {
            return ValidResult.SUCCESS;
        }
        return ValidResult.FAIL;
    }

    /**
     * 新增审核架构
     * @param org
     * @return
     */
    @ResponseBody
    @PostMapping("/orgSave")
    @RequiresPermissions("basic:orgConfig:edit")
    public JsonResult saveOrg(OrgModel org) {
        return isNotNull(service.saveOrg(org));
    }

    /**
     * 编辑审核架构
     * @param org
     * @return
     */
    @ResponseBody
    @PostMapping("/orgUpdate")
    @RequiresPermissions("basic:orgConfig:edit")
    public JsonResult updateOrg(OrgModel org) {
        return isNotNull(service.updateOrg(org));
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @ResponseBody
    @PostMapping("/orgDel")
    @RequiresPermissions("basic:orgConfig:edit")
    public JsonResult del(Integer id) {
        return jsonResult(service.delOrg(id));
    }


    /**
     * 获取列表
     *
     * @return
     */
    @ResponseBody
    @PostMapping("/verifyList")
    @RequiresPermissions("basic:verifyConfig:view")
    public JsonResult selectAllList(VerifyInfoModel verify) {
        startPage();
        List<VerifyInfoModel> list = service.findByCondition(verify);
        return jsonResult(list);
    }


    /** 添加审核配置 */
    @ResponseBody
    @PostMapping("/verifySave")
    @RequiresPermissions("basic:verifyConfig:edit")
    public JsonResult save(VerifyInfoModel verify) {
        return isNotNull(service.saveVerify(verify));
    }

    /** 修改审核配置 */
    @ResponseBody
    @PostMapping("/verifyUpdate")
    @RequiresPermissions("basic:verifyConfig:edit")
    public JsonResult update(VerifyInfoModel verify) {
        return isNotNull(service.updateVerify(verify));
    }

}
